<?php

/*
 * To change this license header, choose License Headers in Project Properties.
 * To change this template file, choose Tools | Templates
 * and open the template in the editor.
 */

/**
 * Description of HistoriquesController
 *
 * @author sirine
 */
class StadesController extends AppController {

    var $verrou = 0;
    var $name = 'Stades';

    //Ajouter un stade
    function creation() {
        if ($this->request->is('post')) {
            $d = $this->request->data;
            $d['Stade']['id'] = null;
            if ($this->Stade->save($d, true, array('nom_STADE', 'coorx_STADE', 'coory_STADE', 'ajoute_par_STADE'))) {
                $this->redirect('/');
            }
        }
    }

    //Afficher les informations : historique, photos et video d'un stade
    function infostade($id_stade = null) {
        if ($this->request->is('post')) {
            $d = $this->request->data;
            $this->set('coorx', $d['Stade']['coorx']);
            $this->set('coory', $d['Stade']['coory']);
            $stade = $this->Stade->find('first', array('conditions' => array('coorx_STADE' => $d['Stade']['coorx'], 'coory_STADE' => $d['Stade']['coory'])));
            $this->set('id', $stade['Stade']['id_STADE']);
            $this->set('nom', $stade['Stade']['nom_STADE']);
            $this->set('historique', $stade['Stade']['historique_STADE']);
        } else if ($id_stade != null) {
            $stade = $this->Stade->find('first', array('conditions' => array('id_STADE' => $id_stade)));
            if (sizeof($stade) == 0) {
                $this->redirect('/');
            }
            $this->set('id', $stade['Stade']['id_STADE']);
            $this->set('nom', $stade['Stade']['nom_STADE']);
            $this->set('historique', $stade['Stade']['historique_STADE']);
        } else {
            $this->redirect('/');
        }
    }

    //Retourne un tableau avec tous les stades 
    function lister() {
        return $this->Stade->find('all');
    }

    //Recherche par mots clés présents dans le nom ou l'historique du stade, les tags des photos ou vidéos 
    function rechercher($keys = null) {
        if ($keys != null) { //S'il y une recherche en cours
            $this->requestAction(array('controller' => 'photos', 'action' => 'activerecherche', $keys));
            $id = $this->requestAction(array('controller' => 'photos', 'action' => 'rechercher', $keys));
            $id2 = $this->requestAction(array('controller' => 'videos', 'action' => 'rechercher', $keys));

            $result = array();
            //recherche dans les nom de stade ou leur historique
            $stade = $this->Stade->find('all', array('conditions' => array('OR' => array('nom_STADE LIKE' => '%' . $keys . '%', 'historique_STADE LIKE' => '%' . $keys . '%'))));

            for ($j = 0; $j < count($stade); $j++) {
                $result[] = $stade[$j];
            }

            //recherche dans les tags des photos de stade
            for ($i = 0; $i < count($id); $i++) {
                $result[] = $this->Stade->find('first', array('conditions' => array('id_STADE' => $id[$i]['Photo']['STADES_id_STADE'])));
            }
            //recherche dans les tags des videos de stade
            for ($k = 0; $k < count($id2); $k++) {
                $result[] = $this->Stade->find('first', array('conditions' => array('id_STADE' => $id2[$k]['Video']['STADES_id_STADE'])));
            }
            return array_unique($result);
        } else {
            $id = $this->requestAction(array('controller' => 'photos', 'action' => 'desactiverecherche'));
            return $this->lister();
        }
    }

    // Verifie si l'historique d'un stade peut être modifier 
    function modifier($id) {
        $table = $this->Stade->find('first', array(
            'conditions' => array('id_STADE' => $id)));


        // récupère le champ 'lock' du stade pour savoir si l'historique est déjà en cours de modification
        $lock = $table['Stade']['lock_STADE'];

        $this->set('id', $id);
        
        if ($lock == 0) { // test du champ lock de stade : aucun verrou
            $this->Stade->updateAll(array('lock_STADE' => 1), array('id_STADE' => $id)); //pose du verrou 
        } else { //verrou sur le champ historique
            //renvoi vers la page d'avant. 
            $this->Session->setFlash(__('Une modification est déjà en cours, veuillez essayer ultérieurement.'));
            return $this->redirect(array('action' => 'infostade', $id));
        }
    }

    function gethistorique($id) {
        $stade = $this->Stade->find('first', array('conditions' => array('id_STADE' => $id)));
        return $stade['Stade']['historique_STADE'];
    }

    
    // Modifier l'historique d'un stade
    function maj() {
        $id = $this->request->data['Stade']['id_STADE'];
        if ($this->request->is('post')) { // si envoie du formulaire
            //recup data form
            $d = $this->request->data;

            $champ = $d['Stade']['historique_STADE']; // données du formulaire
            $id = $d['Stade']['id_STADE'];
            
            //Prise en compte de la modification
            if ($this->Stade->updateAll(array('historique_STADE' => '"' . $champ . '"'), array('id_STADE' => $id))) {
                $this->Session->setFlash(__('Votre modification a été prise en compte .'), 'notif');
                $this->Stade->updateAll(array('lock_STADE' => 0), array('id_STADE' => $id)); //on retire le verrou 

                return $this->redirect(array('action' => 'infostade', $id));
            } else {
                $this->Session->setFlash(__('Votre modification n\'a pu etre prise en compte.'));
            }
        }
        $this->redirect(array('action' => 'infostade', $id));
    }

    /*Retirer le verrou suite à un certain temps sur la page modifier sans activité 
     * Faire en sorte que le stade ne soit pas bloquer aux autres utilisateurs plus de 5min
     */
    
    function debloquer($id) {
        $this->Stade->updateAll(array('lock_STADE' => 0), array('id_STADE' => $id)); //on retire le verrou 
        $this->redirect(array('action' => 'infostade', $id));
    }

}
